package com.bitrate.dagger.redis.anno;

import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

import org.redisson.api.RateIntervalUnit;
import org.redisson.api.RateType;

import com.bitrate.dagger.redis.enums.LimitStrategy;

@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface XRateLimit {

	// 限流策略
	LimitStrategy strategy() default LimitStrategy.GLOBAL;

	// 实例共享策略
	RateType type() default RateType.OVERALL;

	// 产生可用令牌数量
	long rate() default 1;

	// 流速
	long limit() default 10;

	// 时间策略
	RateIntervalUnit rateUnit() default RateIntervalUnit.SECONDS;

	// 限流警告提示
	String warnMsg() default "系统繁忙,请稍后再试";

}
